home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / arexx / trxtlsr3.lha / PGP2GUI / PGP2GUI.rexx < prev    next >
OS/2 REXX Batch file  |  1996-04-22  |  28KB  |  935 lines

  1. /*
  2.    $VER: PGP2TRXGUI.rexx V1.3 (11.2.96) © by Nils Görs
  3.  
  4. Dies  ist  wieder  eine  der  vielen Gui's für PGP.  Aber dies ist die
  5. erste, die in ARexx geschrieben wurde ;-)
  6. This  is  one of those GUI for PGP.  But this is the first one written
  7. in ARexx ;-)
  8. */
  9.  
  10. /* In welcher Sprache soll das Skript laufen? */
  11. Sprache = "deutsch"
  12. Sprache = "english"
  13.  
  14. /* Wo befindet sich PGP ?? */
  15. PGP.exe = "PGP"
  16.  
  17. /* Wie ist der Name der PGP-Pfad-Variable ?? */
  18. PGPVariable = "PGPPATH"
  19.  
  20. /* In welches File sollen temporäre Daten geschrieben werden? */
  21. PGPOut  = "t:qwer.pgp"
  22.  
  23. /* Informationen über das Ausgabefenster      */
  24. LeftBorder   = 10    /*Abstand linker Rand    */
  25. TopBorder    = 300   /*Abstand vom oberen Rand*/
  26. OutPutWidth  = 640   /*Breite des Fensters    */
  27. OutPutHeight = 150   /*Höhe des Fensters      */
  28.  
  29. /************************************************
  30.  * Please don't change anything under this line *
  31.  ************************************************/
  32. OPTIONS RESULTS
  33.  
  34. PARSE ARG PubScreen
  35.  
  36. IF PubScreen == "?" THEN DO
  37.  OPTIONS PROMPT "PUBSCREEN/K: "
  38.  PARSE PULL PubScreen
  39. END
  40.  
  41. CALL _InitAll
  42. CALL _InitIDList
  43.  
  44. /*
  45. ** Beschreibung der Applikation
  46. */
  47. appname     = 'PGPTrxGui'
  48. applongname = 'PGPTrxGui - ©1995/96 by Nils Görs'
  49. appinfo     = 'Graphical-User-Interface for PrettyGoodPrivacy(tm)'
  50. appversion  = '1.3'
  51. apprelease  = '3'
  52. appdate     = '11.2.96'
  53.  
  54. _maintags:
  55. windowtags = WindowID(1),
  56.              PubScreenName(PubScreen),
  57.              WindowTitle(appname appversion),
  58.              QuickHelpOn(HelpBool),
  59.               BeginMenu(localestring(MSG_MAIN_PROJECT)),
  60.               MenuItem(localestring(MSG_MAIN_MENUITEM_ABOUT),100) ItemBarlabel,
  61.               MenuItemC(localestring(MSG_MAIN_MENUITEM_HELP),103),
  62.               MenuItem(localestring(MSG_MAIN_MENUITEM_CHANGE),102),
  63.               MenuItem(localestring(MSG_MAIN_MENUITEM_ICONIFY),104) ItemBarlabel,
  64.               MenuItem(localestring(MSG_MAIN_MENUITEM_QUIT),101),
  65.              'VertGroupA Space',
  66.               'HorizGroupA Space',
  67.                 'TROB_FrameBox TRFB_FRAMING',
  68.                  'VertGroupA',
  69.                     Button(localestring(MSG_MAIN_GENERATEKEY),1),
  70.                     'TRDO_QuickHelpString "Generieren Sie sich ihren eigenen Sicherheitsschlüssel."',
  71.                     Button(localestring(MSG_MAIN_CHECKOFSIGN),2),
  72.                     'TRDO_QuickHelpString "Überprüfen Sie bitte einmal ob Schlüsseldateien vom Besitzer beglaubigt sind."',
  73.                     Button(localestring(MSG_MAIN_EDITKEY),3),
  74.                     'TRDO_QuickHelpString "Neue UserID anhängen, Pass phrase ändern bzw. andere User einstufen."',
  75.                     Button(localestring(MSG_MAIN_VIEWCONTENTS),4),
  76.                     'TRDO_QuickHelpString "Zeigt an welche öffentlichen Schlüssel sich in Ihrem pubring befinden."',
  77.                     Button(localestring(MSG_MAIN_VIEWFINGERPRINTS),5),
  78.                     'TRDO_QuickHelpString "Zeigt die Fingerprints der Anwender an."',
  79.                     Button(localestring(MSG_MAIN_SAVEASCIIKEY),6),
  80.                     'TRDO_QuickHelpString "Speichert einen öffentlichen Schlüssel im ASCII-Format ab."',
  81.                  'EndGroup',
  82. ,
  83.                 'SpaceS VertSeparator SpaceS',
  84. ,
  85.                'VertGroupA',
  86.                  'TROB_FrameBox TRFB_FRAMING',
  87.                    'VertGroupA',
  88.                      Button(localestring(MSG_MAIN_SAVEKEY),7),
  89.                      'TRDO_QuickHelpString "Speichert einen öffentlichen Schlüssel im Binärformat ab."',
  90.                      Button(localestring(MSG_MAIN_ADDKEY),8),
  91.                      'TRDO_QuickHelpString "Nimmt einen öffentlichen Schlüssel, aus einer Datei, in ihren pubring auf."',
  92.                      Button(localestring(MSG_MAIN_DELETEKEY),9),
  93.                      'TRDO_QuickHelpString "Entfernt einen öffentlichen Schlüssel aus ihrem pubring."',
  94.                      Button(localestring(MSG_MAIN_SIGNKEY),10),
  95.                      'TRDO_QuickHelpString "Setzen Sie eine Unterschrift unter einen öffentlichen Schlüssel."',
  96.                      Button(localestring(MSG_MAIN_REMOVESIGNATURE),11),
  97.                      'TRDO_QuickHelpString "Entfernen Sie eine Unterschrift von einem öffentlichen Schlüssel."',
  98.                      Button(localestring(MSG_MAIN_REVOKEKEY),12),
  99.                      'TRDO_QuickHelpString "Erklären Sie einen Schlüssel für ungültig !"',
  100.                    'EndGroup Space',
  101.                'EndGroup Space',
  102.               'EndGroup',
  103. ,
  104.                'HorizGroupA Space',
  105.                  'TROB_FrameBox TRFB_FRAMING',
  106.                 'VertGroupA',
  107.                    Button(localestring(MSG_MAIN_CRYPTFILE),13),
  108.                    'TRDO_QuickHelpString "Verschlüsselt eine Datei Ihrer Wahl."',
  109.                    Button(localestring(MSG_MAIN_ENCRYPCHECKSIGNA),14),
  110.                    'TRDO_QuickHelpString "Entschlüsselt eine Datei für Sie und überprüft diese auf korrektheit."',
  111.                    Button(localestring(MSG_MAIN_SIGNFILE),15),
  112.                    'TRDO_QuickHelpString "Setzt eine Unterschrift unter eine Datei."',
  113.                   'SpaceS',
  114.                   'LineArray',
  115.                      'BeginLine',
  116.                         'HorizGroupS Space EndGroup',
  117.                         CheckBox(20) 'TRDO_QuickHelpString "Erstellt eine seperate Unterschrift für eine Datei."',
  118.                         'Space',
  119.                         Text3(localestring(MSG_MAIN_BREAKSIGNATURE)) 'TRAT_ID 20',
  120.                         'HorizGroupS Space EndGroup',
  121.                      'EndLine',
  122.                      'SpaceS',
  123.                      'BeginLine',
  124.                         'HorizGroupS Space EndGroup',
  125.                         CheckBox(21),
  126.                         'TRDO_QuickHelpString "Erzeugt eine Datei im ASCII-Format (z.b. zum E-Mail Versand)."',
  127.                         'Space',
  128.                         Text3(localestring(MSG_MAIN_ENABLEASCIIARMOR)) 'TRAT_ID 21',
  129.                         'HorizGroupS Space EndGroup',
  130.                      'EndLine',
  131.                      'SpaceS',
  132.                      'BeginLine',
  133.                         'HorizGroupS Space EndGroup',
  134.                         CheckBox(22),
  135.                         'TRDO_QuickHelpString "Nachrichten im Klartext mit ASCII-Unterschrift."',
  136.                         'Space',
  137.                         Text3(localestring(MSG_MAIN_SIGNEDMESSAGES)) 'TRAT_ID 22',
  138.                         'HorizGroupS Space EndGroup',
  139.                      'EndLine',
  140.                   'EndArray',
  141.                   'Space',
  142.                 'EndGroup Space',
  143.                'EndGroup Space',
  144.              'EndGroup Space EndProject',
  145.  
  146. /*
  147. ** Unterbrechungssignale
  148. */
  149.  
  150. SIGNAL ON break_c
  151. /*SIGNAL ON failure*/
  152. SIGNAL ON halt
  153. SIGNAL ON ioerr
  154. SIGNAL ON syntax
  155.  
  156. app = TR_CREATEAPP('TRCA_Name'     '"'appname'"',
  157.                    'TRCA_LongName' '"'applongname'"',
  158.                    'TRCA_Info'     '"'appinfo'"',
  159.                    'TRCA_Version'  '"'appversion'"',
  160.                    'TRCA_Release'  '"'apprelease'"',
  161.                    'TRCA_Date'     '"'appdate'"',
  162.                    'TAG_END')
  163.  
  164.  
  165. IF app ~= '00000000'x THEN DO
  166.  
  167.    window = TR_OPENPROJECT(app,windowtags)
  168.    WindowProject=C2D(window) /* zum Locken des Fensters bei Über */
  169.  
  170.    IF window ~= '00000000'x THEN DO
  171.       ende = 0
  172.  
  173. CheckBox1 = 0
  174. CheckBox2 = 0
  175. CheckBox3 = 0
  176.  
  177. IF HelpBool = 1 THEN CALL TR_SetAttribute(window,103,TRMN_Flags,TRMF_CHECKED)
  178.  
  179.       DO WHILE ende ~= 1
  180.          CALL TR_WAIT(app,'')
  181.  
  182.          DO WHILE TR_HANDLEMSG(app,'event')
  183.  
  184. /******************
  185. *** CLOSEGADGET ***
  186. *******************/
  187.             IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN DO
  188.              setuni = 0
  189.               IF event.trm_project = dummywindow THEN DO
  190.                CALL _uniconify
  191.                setuni = 1
  192.               END
  193.  
  194.              IF setuni ~= 1 THEN DO
  195.               IF event.trm_project = window THEN DO
  196.                nummer = TR_GETATTRIBUTE(window,10,'TRAT_Value')+1
  197.                ende = 1
  198.               END
  199.              END
  200.             END
  201.  
  202. /*************
  203. *** GADGET ***
  204. **************/
  205.             IF event.trm_class = 'TRMS_ACTION' THEN DO
  206.              SELECT
  207.               WHEN event.trm_id = 1  THEN CALL _KeyGenerieren
  208.               WHEN event.trm_id = 2  THEN CALL _BeglaubigungUeberpruefen
  209.               WHEN event.trm_id = 3  THEN CALL _KeyEditieren
  210.               WHEN event.trm_id = 4  THEN CALL _InhaltAnzeigen
  211.               WHEN event.trm_id = 5  THEN CALL _FingerPrintAnzeigen
  212.               WHEN event.trm_id = 6  THEN CALL _ASCIIKeySpeichern
  213.               WHEN event.trm_id = 7  THEN CALL _KeySpeichern
  214.               WHEN event.trm_id = 8  THEN CALL _KeyHinzufuegen
  215.               WHEN event.trm_id = 9  THEN CALL _Keyloeschen
  216.               WHEN event.trm_id = 10 THEN CALL _KeyUnterschreiben
  217.               WHEN event.trm_id = 11 THEN CALL _UnterschriftEntfernen
  218.               WHEN event.trm_id = 12 THEN CALL _KeyZurueckziehen
  219.               WHEN event.trm_id = 13 THEN CALL _DateiVerschluesseln
  220.               WHEN event.trm_id = 14 THEN CALL _DateiEntschluesseln
  221.               WHEN event.trm_id = 15 THEN CALL _DateiUnterschreiben
  222.               WHEN event.trm_id = 100 THEN CALL about
  223.               WHEN event.trm_id = 102 THEN CALL _NewPubScreen
  224.               WHEN event.trm_id = 104 THEN CALL _Iconify
  225.               WHEN event.trm_id = 101 THEN DO
  226.                Erg=rtezrequest(localestring(MSG_REQUEST_REALLYQUIT),localestring(MSG_YESNO),,"rt_pubscrname="PubScreen)
  227.                IF Erg == 1 THEN ende = 1
  228.               END
  229.              OTHERWISE
  230.               NOP
  231.              END
  232.             END
  233.  
  234. /***************
  235. *** CHECKBOX ***
  236. ****************/
  237.            IF event.trm_class = 'TRMS_NEWVALUE' THEN DO
  238.             SELECT
  239.               WHEN event.trm_id = 103 THEN DO
  240.                HelpBool = TR_GETATTRIBUTE(window,103,'TRAT_VALUE')
  241.                CALL TR_SETATTRIBUTE(window,0,'TRWI_QuickHelp',HelpBool)
  242.                END
  243.               WHEN event.trm_id = 20 THEN
  244.                CheckBox1=event.trm_data   /*Abgetrennte Unterschrift?*/
  245.               WHEN event.trm_id = 21 THEN
  246.                CheckBox2=event.trm_data   /*Radix64-Format*/
  247.               WHEN event.trm_id = 22 THEN
  248.                CheckBox3=event.trm_data   /*Text in Klartext*/
  249.               OTHERWISE NOP
  250.             END
  251.             IF CheckBox1+CheckBox2+Checkbox3 ~= 0 THEN
  252.              CALL TR_SETATTRIBUTE(window,14,'TRAT_Disabled',1)
  253.             IF CheckBox1+CheckBox2+Checkbox3 == 0 THEN
  254.              CALL TR_SETATTRIBUTE(window,14,'TRAT_Disabled',0)
  255.  
  256.            END
  257.          END
  258.       END
  259.       CALL TR_CLOSEPROJECT(window)
  260.    END
  261.    CALL TR_DELETEAPP(app)
  262. END
  263. EXIT(0)
  264.  
  265. /*******************************************
  266. *** Unterroutinen für die PGP-Ausführung ***
  267. ********************************************/
  268. _KeyGenerieren:
  269.  ADDRESS COMMAND PGP.exe '-kg'
  270. RETURN
  271. /*
  272. ***
  273. */
  274. _BeglaubigungUeberpruefen:
  275.  HeadLine = localestring(MSG_CHECKWHICHKEY)
  276.  NotMore = 0            /* Gadget unghosten */
  277.    CALL _ListViewUserListe
  278.     SELECT
  279.      WHEN ende = 1 THEN DO
  280.       ende = 0
  281.       RETURN
  282.       END
  283.      WHEN ende = 2 THEN
  284.       ADDRESS COMMAND PGP.exe '-kc "'pgpuserliste.lnummer'" >'PgPOut||2
  285.      WHEN ende = 3 THEN
  286.       ADDRESS COMMAND PGP.exe '-kc >'PgPOut||2
  287.       OTHERWISE
  288.       NOP
  289.     END
  290.     ende = 0
  291.  IF RXTR_READFILE(PgpOut||2,TemporaryList) == 0 THEN EXIT(5)
  292.  ADDRESS COMMAND 'Delete' pgpout||2 'QUIET'
  293.  CALL _NormalListView
  294. RETURN
  295. /*
  296. ***
  297. */
  298. _KeyEditieren:
  299.  HeadLine = localestring(MSG_EDITWHICHUSERID)
  300.  
  301.  NotMore = 1            /* Gadget ghosten */
  302.    CALL _ListViewUserListe
  303.     SELECT
  304.      WHEN ende = 1 THEN nop
  305.      WHEN ende = 2 THEN
  306.        ADDRESS COMMAND PGP.exe '-ke "'pgpuserliste.lnummer'"'
  307.       OTHERWISE
  308.       NOP
  309.     END
  310.     ende = 0
  311. RETURN
  312. /*
  313. ***
  314. */
  315. _InhaltAnzeigen:
  316.  ADDRESS COMMAND PGP.exe '-kvv >'PgpOut||2
  317.  IF RXTR_READFILE(PgpOut||2,TemporaryList) == 0 THEN EXIT(5)
  318.  ADDRESS COMMAND 'Delete' pgpout||2 'QUIET'
  319.  CALL _NormalListView
  320. RETURN
  321. /*
  322. ***
  323. */
  324. _FingerPrintAnzeigen:
  325.  HeadLine = localestring(MSG_SHOWWHICHFINGERPRINTS)
  326.  
  327.  NotMore = 0            /* Gadget unghosten */
  328.    CALL _ListViewUserListe
  329.     SELECT
  330.      WHEN ende = 1 THEN DO
  331.       ende = 0
  332.       RETURN
  333.      END
  334.      WHEN ende = 2 THEN
  335.          ADDRESS COMMAND PGP.exe '-kvc "'pgpuserliste.lnummer'" >'PgPOut||2
  336.      WHEN ende = 3 THEN 
  337.          ADDRESS COMMAND PGP.exe '-kvc >'PgpOut||2
  338.       OTHERWISE
  339.       NOP
  340.     END
  341.       IF READFILE(PgpOut||2,TemporaryList) == 0 THEN EXIT(5)
  342.       ADDRESS COMMAND 'Delete' pgpout||2 'QUIET'
  343.       CALL _NormalListView
  344.     ende = 0
  345. RETURN
  346. /*
  347. ***
  348. */
  349. _ASCIIKeySpeichern:
  350.  HeadLine = localestring(MSG_SAVEWHICHKEYASASCII)
  351.  
  352.  NotMore = 1            /* Gadget ghosten */
  353.    CALL _ListViewUserListe
  354.     SELECT
  355.      WHEN ende = 1 THEN nop
  356.      WHEN ende = 2 THEN
  357.       ADDRESS COMMAND PGP.exe '-kxa "'pgpuserliste.lnummer'" "'PGPPath||pgpuserliste.lnummer'"'
  358.       OTHERWISE
  359.       NOP
  360.     END
  361.     ende = 0
  362. RETURN
  363. /*
  364. ***
  365. */
  366. _KeySpeichern:
  367.  HeadLine = localestring(MSG_WHICHKEYTOSAVE)
  368.  
  369.  NotMore = 1            /* Gadget ghosten */
  370.    CALL _ListViewUserListe
  371.     SELECT
  372.      WHEN ende = 1 THEN nop
  373.      WHEN ende = 2 THEN
  374.       ADDRESS COMMAND PGP.exe '-kx "'pgpuserliste.lnummer'" "'PGPPath||pgpuserliste.lnummer'"'
  375.       OTHERWISE
  376.       NOP
  377.     END
  378.     ende = 0
  379. RETURN
  380. /*
  381. ***
  382. */
  383. _KeyHinzufuegen:
  384. CALL TR_LOCKPROJECT(window)
  385. CALL rtfilerequest(,,localestring(MSG_REQUEST_PLEASECHOOSE),,"rt_pubscrname="PubScreen "rtfi_flags=freqf_multiselect",files)
  386. IF files == 1 THEN DO
  387.   do i = 1 to files.count
  388.    ADDRESS COMMAND Pgp.exe '-ka' files.i
  389.   END
  390. END
  391. CALL TR_UNLOCKPROJECT(window)
  392. DROP files
  393. RETURN
  394. /*
  395. ***
  396. */
  397. _Keyloeschen:
  398.  HeadLine = localestring(MSG_WHICHUSERID)
  399.  NotMore = 1            /* Gadget ghosten */
  400.    CALL _ListViewUserListe
  401.     SELECT
  402.      WHEN ende = 1 THEN nop
  403.      WHEN ende = 2 THEN DO
  404.       ADDRESS COMMAND PGP.exe '-kr "'pgpuserliste.lnummer'"'
  405.       IF (RC) = 0 THEN CALL _InitIDList
  406.       END
  407.       OTHERWISE
  408.       NOP
  409.     END
  410.     ende = 0
  411. RETURN
  412.  
  413. /*
  414. ***
  415. */
  416. _KeyUnterschreiben:
  417.  HeadLine = localestring(MSG_SIGNWHICHKEY)
  418.  NotMore = 1            /* Gadget ghosten */
  419.    CALL _ListViewUserListe
  420.     SELECT
  421.      WHEN ende = 1 THEN nop
  422.      WHEN ende = 2 THEN
  423.        ADDRESS COMMAND PGP.exe '-ks "'pgpuserliste.lnummer'"'
  424.       OTHERWISE
  425.       NOP
  426.     END
  427.     ende = 0
  428. RETURN
  429. /*
  430. ***
  431. */
  432. _UnterschriftEntfernen:
  433.  HeadLine = localestring(MSG_DELETEWHICHSIGN)
  434.  NotMore = 1            /* Gadget ghosten */
  435.    CALL _ListViewUserListe
  436.     SELECT
  437.      WHEN ende = 1 THEN nop
  438.      WHEN ende = 2 THEN
  439.        ADDRESS COMMAND PGP.exe '-krs "'pgpuserliste.lnummer'"'
  440.       OTHERWISE
  441.       NOP
  442.     END
  443.     ende = 0
  444. RETURN
  445. /*
  446. ***
  447. */
  448. _Keyzurueckziehen:
  449.  HeadLine = localestring(MSG_DELETEWHICHSIGN)
  450.  NotMore = 1            /* Gadget ghosten */
  451.    CALL _ListViewUserListe
  452.     SELECT
  453.      WHEN ende = 1 THEN nop
  454.      WHEN ende = 2 THEN
  455.        ADDRESS COMMAND PGP.exe '-kd "'pgpuserliste.lnummer'"'
  456.       OTHERWISE
  457.       NOP
  458.     END
  459.     ende = 0
  460. RETURN
  461. /*
  462. ***
  463. */
  464. _Dateiverschluesseln:
  465. File=rtfilerequest(,,localestring(MSG_REQUEST_PLEASECHOOSE),,"rt_pubscrname="PubScreen)
  466. IF file ~= "" THEN DO
  467.  HeadLine = localestring(MSG_WHICHFILEENCODE)
  468.  NotMore = 1            /* Gadget ghosten */
  469.    CALL _ListViewUserListe
  470.     template = '-e'
  471.     IF CheckBox1 == 1 THEN template = template||"b" /*Abgetrennte Unterschrift*/
  472.     IF CheckBox2 == 1 THEN template = template||"a"           /*Radix64-Format*/
  473.     IF CheckBox3 == 1 THEN template = template||" +clearsig=on"  /*in Klartext*/
  474.     SELECT
  475.      WHEN ende = 1 THEN nop
  476.      WHEN ende = 2 THEN
  477.        ADDRESS COMMAND PGP.exe template file '"'pgpuserliste.lnummer'"'
  478.       OTHERWISE
  479.       NOP
  480.     END
  481.     ende = 0
  482. END
  483. DROP file
  484. DROP template
  485. RETURN
  486. /*
  487. ***
  488. */
  489. _Dateientschluesseln:
  490. File=rtfilerequest(,,localestring(MSG_PLEASECHOOSEFILE),,"rt_pubscrname="PubScreen)
  491. IF file ~= "" THEN
  492.   ADDRESS COMMAND PGP.exe file
  493. DROP file
  494. RETURN
  495. /*
  496. ***
  497. */
  498. _DateiUnterschreiben:
  499. File=rtfilerequest(,,localestring(MSG_PLEASECHOOSEFILE,,"rt_pubscrname="PubScreen)
  500. IF file ~= "" THEN DO
  501.     template = '-s'
  502.     IF CheckBox1 == 1 THEN template = template||"b" /*Abgetrennte Unterschrift*/
  503.     IF CheckBox2 == 1 THEN template = template||"a"           /*Radix64-Format*/
  504.     IF CheckBox3 == 1 THEN template = template||" +clearsig=on"  /*in Klartext*/
  505.   ADDRESS COMMAND PGP.exe template file
  506. END
  507. DROP file
  508. DROP template
  509. RETURN
  510.  
  511. /******************************
  512. *** Liste mit ID's besorgen ***
  513. *******************************/
  514. _InitIDList:
  515. ADDRESS COMMAND 'pgp >'PgpOut '-kv'
  516. IF RXTR_READFILE(PgpOut,PgpUserListebak) == 0 THEN EXIT(5)
  517. reeD=WORDINDEX(PgpUserListebak.4,4)
  518. j = 1
  519. do i = 4 to PgpUserListebak.0-1
  520.  UserID=SUBSTR(PgpUserListebak.i,reeD)
  521.  PgpUserListe.j = UserID
  522.  PgpUserListe.0 = j
  523.  j = j+1
  524. END
  525. ADDRESS COMMAND 'delete' pgpout 'QUIET'
  526. RETURN
  527.  
  528. /******************************
  529. *** ListView zum auswählen! ***
  530. *******************************/
  531. _ListViewUserListe:
  532. RemoveListTags = WindowID(2),
  533.    WindowPosition('TRWP_MOUSEPOINTER'),
  534.    WindowFlags('TRWF_NOCLOSEGADGET'),
  535.    WindowTitle(HeadLine),
  536.    PubScreenName(Pubscreen),
  537.    'VertGroupA',
  538.       'Space',
  539.       'HorizGroupA',
  540.          'Space',
  541.          ListSS('pgpuserliste',301,0,0),
  542.          'Space',
  543.       'EndGroup',
  544.       'Space',
  545.       'HorizSeparator',
  546.       'Space',
  547.       'HorizGroupA',
  548.       'Space',
  549.       ButtonRE(localestring(MSG_BUTTON_SHOWONE),304),
  550.       Button(localestring(MSG_BUTTON_SHOWALL),302),
  551.       Button(localestring(MSG_BUTTON_CANCEL),303),
  552.       'Space',
  553.    'EndGroup Space EndGroup EndGroup EndProject'
  554.     ListViewUserListe = TR_OPENPROJECT(app,Removelisttags)
  555.  
  556.   IF ListViewUserListe ~= '00000000'x THEN DO
  557.     CALL TR_LOCKPROJECT(window)
  558.  
  559. IF NotMore == 1 THEN
  560.   CALL TR_SETATTRIBUTE(ListViewUserListe,302,'TRAT_Disabled',1)
  561.  
  562. ende = 0
  563.       DO WHILE ende = 0
  564.          DO WHILE TR_HANDLEMSG(app,'event2')
  565.  
  566.             /* Alle Gadget */
  567.             IF event2.trm_id = 302 THEN DO
  568.             ende = 3
  569.             END
  570.  
  571.             /* Cancel Gadget */
  572.             IF event2.trm_id = 303 THEN ende = 1
  573.  
  574.             /* Einen Eintrag */
  575.             IF event2.trm_id = 304 THEN DO
  576.              LNummer=TR_GETATTRIBUTE(ListViewUserListe,301,'TRAT_Value')+1
  577.              ende = 2
  578.             END
  579.  
  580.             IF event2.trm_class = 'TRMS_NEWVALUE' THEN DO
  581.              IF event2.trm_id = 301 THEN DO
  582.               IF BITAND(D2X(event2.trm_qualifier),'0200'x) = '0200'x THEN DO
  583.               LNummer=TR_GETATTRIBUTE(ListViewUserListe,301,'TRAT_Value')+1
  584.               ende = 2
  585.               END
  586.              END
  587.             END
  588.  
  589.          END
  590.       END
  591.     CALL TR_UNLOCKPROJECT(window)
  592.     CALL TR_CLOSEPROJECT(ListViewUserListe)
  593. END
  594. RETURN
  595.  
  596. _NormalListView:
  597. RemoveListTags = WindowID(3),
  598.    WindowPosition('TRWP_MOUSEPOINTER'),
  599.    WindowTitle(localestring(MSG_CONTENTS)),
  600.    PubScreenName(Pubscreen),
  601.    'VertGroupAC',
  602.       'Space',
  603.       'HorizGroupAC',
  604.          'Space',
  605.          ListRO('TemporaryList',301,0),
  606.       'EndGroup',
  607.          'HorizSeparator SpaceS',
  608.          CenteredButtonR(localestring(MSG_BUTTON_CANCEL),302),
  609.    'Space EndGroup Space EndProject'
  610.  
  611.     NormalListView = TR_OPENPROJECT(app,Removelisttags)
  612.  
  613.   IF NormalListView ~= '00000000'x THEN DO
  614.     CALL TR_LOCKPROJECT(window)
  615.  
  616.       ende = 0
  617.       DO WHILE ende ~= 1
  618.          DO WHILE TR_HANDLEMSG(app,'event2')
  619.             /* Cancel Gadget */
  620.             IF event2.trm_id = 302 THEN ende = 1
  621.             IF event2.trm_class = 'TRMS_CLOSEWINDOW' THEN DO
  622.                ende = 1
  623.             END
  624.  
  625.          END
  626.       END
  627.     CALL TR_UNLOCKPROJECT(window)
  628.     CALL TR_CLOSEPROJECT(NormalListView)
  629. END
  630. ende = 0
  631. RETURN
  632.  
  633. /*******************************************************************************
  634. ** Info über das Programm anzeigen
  635. *******************************************************************************/
  636. about:
  637.    CALL TR_AUTOREQUEST(app,window,PubScreenName(PubScreen),
  638.          BeginRequester(localestring(MSG_ABOUT),'TRWP_CENTERDISPLAY'),
  639.             'VertGroupA',
  640.                'Space',
  641.                CenteredText3(appname appversion '('||appdate||') (C) 1995/1996 by Nils Görs <N.Goers@Art-Line.de>'),
  642.                'SpaceS',
  643.                CenteredText(appinfo),
  644.                'Space',
  645.                'HorizSeparator',
  646.                'Space',
  647.                CenteredText3('Dieses Programm verwendet das 'Triton GUI creation system''),
  648.                'SpaceS',
  649.                CenteredText("'Triton' ist (C) by Stefan Zeiger <s.zeiger@laren.rhein-main.de>"),
  650.                'Space',
  651.                'HorizSeparator',
  652.                'Space',
  653.                CenteredText3("Dieses Programm verwendet die 'tritonrexx.library'"),
  654.                'SpaceS',
  655.                'HorizGroupSC',
  656.                   'Space',
  657.                   TextN("'tritonrexx.library' ist (C) by Jürgen Kohrmeyer <j_kohrmeyer@wilam.north.de>") 'TRAT_Flags TRTX_NOUNDERSCORE',
  658.                   'Space',
  659.                'EndGroup',
  660.                'Space',
  661.             'EndGroup',
  662.             'BeginRequesterGads',
  663.             CenteredButtonRE(localestring(MSG_BUTTON_THANKS),10000),
  664.          'EndRequester')
  665.    RETURN
  666.  
  667. /*****************************************************************
  668. *** Routine, die das GUI auf einem neuen PubScreen öffnen läßt ***
  669. ******************************************************************/
  670. _NewPubScreen:
  671.  
  672. IF PUBSCREENLIST('ScreenList') == 0 THEN RETURN
  673.  
  674. delstart=LSEARCH(PubScreen,Screenlist)
  675. IF delstart ~= -1 THEN RXTR_STEMREMOVE(ScreenList,delstart)
  676.  
  677. ScreenListTags = WindowID(4),
  678.    WindowPosition('TRWP_MOUSEPOINTER'),
  679.    WindowTitle(localestring(MSG_CHANGEPUBSCREEN)),
  680.    WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
  681.    PubScreenName(Pubscreen),
  682.    QuickHelpOn(HelpBool),
  683.    'VertGroupA',
  684.       'Space',
  685.       'HorizGroupA',
  686.          'Space',
  687.           ListSel('screenlist',301,0),
  688.          'Space',
  689.       'EndGroup',
  690.       'Space',
  691.       'HorizSeparator',
  692.       'Space',
  693.       'HorizGroupA',
  694.       'Space',
  695.       ButtonRE(localestring(MSG_BUTTON_CANCEL),302),
  696.          'TRDO_QuickHelpString "hier kann man PGP2GUI auf einem anderen Bildschirm öffnen."',
  697.       'Space',
  698.    'EndGroup Space EndGroup EndGroup EndProject'
  699.  
  700.     PubScreenProject = TR_OPENPROJECT(app,Screenlisttags)
  701.  
  702.   IF PubScreenProject ~= '00000000'x THEN DO
  703.     CALL TR_LOCKPROJECT(window)
  704.  
  705.       DO WHILE ende ~= 1
  706.          DO WHILE TR_HANDLEMSG(app,'event2')
  707.             IF event2.trm_class = 'TRMS_ACTION' THEN ende = 1 /* Cancel Gadget */
  708.  
  709.             IF event2.trm_class = 'TRMS_NEWVALUE' THEN DO
  710.             nummer = TR_GETATTRIBUTE(PubScreenProject,301,'TRAT_Value')+1
  711.              IF PubScreen ~= Screenlist.nummer THEN DO
  712.               PubScreen = ScreenList.nummer
  713.               ScreenOutPut = 'CON:'LeftBorder'/'TopBorder'/'OutPutWidth'/'OutPutHeight'/Closegadget zum Beenden/SCREEN' PubScreen'/AUTO/CLOSE'
  714.               CALL TR_UNLOCKPROJECT(window)
  715.               CALL TR_CLOSEPROJECT(PubScreenProject)
  716.               CALL TR_CLOSEPROJECT(window)
  717.               CALL TR_DELETEAPP(app)
  718.               CALL _maintags
  719.              END
  720.             ELSE ende = 1
  721.             END
  722.          END
  723.       END
  724.  
  725.    ende = 0
  726.     CALL TR_UNLOCKPROJECT(window)
  727.     CALL TR_CLOSEPROJECT(PubScreenProject)
  728. END
  729. RETURN
  730.  
  731. _Iconify:
  732. iwinsize.trd_left=10
  733. iwinsize.trd_top=10
  734. iwinsize.trd_width=20
  735. iwinsize.trd_height=10
  736. iwinsize.trd_left2=10
  737. iwinsize.trd_top2=10
  738. iwinsize.trd_width2=10
  739. iwinsize.trd_height2=20
  740. iwinsize.trd_zoomed=30
  741.  
  742. SleepWin = WindowID(1000),
  743.            PubScreenName(PubScreen),
  744.            WindowTitle(appname appversion),
  745.            WindowDimensions(iwinsize),
  746.            'EndProject'
  747.  
  748.   ok=tr_closeproject(window)
  749.   window = '00000000'x
  750. dummywindow = TR_OPENPROJECT(app,SleepWin)
  751. return
  752.  
  753. _uniconify:
  754.   ok=tr_closeproject(dummywindow)
  755.   dummywindow = '00000000'x
  756.  
  757.   prefs.iwinx=iwinsize.trd_left
  758.   prefs.iwiny=iwinsize.trd_top
  759.   prefs.iwinw=iwinsize.trd_width
  760.   prefs.iwinh=iwinsize.trd_height
  761.   prefs.iwinx2=iwinsize.trd_left2
  762.   prefs.iwiny2=iwinsize.trd_top2
  763.   prefs.iwinw2=iwinsize.trd_width2
  764.   prefs.iwinh2=iwinsize.trd_height2
  765.   prefs.iwinz=iwinsize.trd_zoomed
  766.  
  767.    window = TR_OPENPROJECT(app,windowtags)
  768.    WindowProject=C2D(window) /* zum Locken des Fensters bei About */
  769.  
  770. IF HelpBool = 1 THEN DO
  771.  CALL TR_SetAttribute(window,103,TRMN_Flags,TRMF_CHECKED)
  772.  CALL TR_SetAttribute(window,0,TRWI_QuickHelp,1)
  773. END
  774. return
  775.  
  776. /*******************************************************************************
  777. ** Load and interpret arexx script
  778. *******************************************************************************/
  779.  
  780. loadrexx:
  781.    PARSE ARG dir,file,store
  782.  
  783.    IF dir ~= '' THEN DO
  784.       IF RIGHT(dir,1) = ':' THEN
  785.          file = dir||file
  786.       ELSE
  787.          file = dir||'/'||file
  788.    END
  789.  
  790.    IF ~OPEN('rexxfile',file,'R') THEN
  791.       RETURN(FALSE)
  792.  
  793.    rexxtext = READCH('rexxfile',64000)
  794.    INTERPRET rexxtext
  795.  
  796.    CALL CLOSE('rexxfile')
  797.  
  798.    IF store ~= '' THEN
  799.       INTERPRET store '= rexxtext'
  800.  
  801.    DROP rexxtext
  802.  
  803.    RETURN(TRUE)
  804.  
  805. /*******************************************************************************
  806. ** Text aus dem Catalog-File auslesen, falls vorhanden
  807. *******************************************************************************/
  808.  
  809. localestring:
  810.    PARSE ARG stringnumber
  811.  
  812.    IF catalog ~= 0 THEN
  813.       RETURN(GETCATALOGSTR(catalog,stringnumber,strings.stringnumber))
  814.    ELSE
  815.       RETURN(strings.stringnumber)
  816.  
  817. _InitAll:
  818. NL = '0a'x
  819. TRUE  = 1
  820. FALSE = 0
  821.  
  822. HelpBool      = 0
  823. catalog       = 0
  824.  
  825.  
  826.    /*
  827.    ** Open libs
  828.    */
  829.  
  830.    IF ~SHOW('LIBRARIES','tritonrexx.library') THEN
  831.       IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN
  832.          quit('Cannot open tritonrexx.library!',10)
  833.  
  834.    IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
  835.       IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
  836.          quit('Cannot open rexxtricks.library!',10)
  837.  
  838.    IF ~SHOW('LIBRARIES','rexxreqtools.library') THEN
  839.       IF ~ADDLIB('rexxreqtools.library',9,-30,0) THEN
  840.          quit('Cannot open rexxreqtools.library!',10)
  841.  
  842.    IF ~SHOW('LIBRARIES','rexxsupport.library') THEN
  843.       IF ~ADDLIB('rexxsupport.library',9,-30,0) THEN
  844.          quit('Cannot open rexxsupport.library!',10)
  845.  
  846.  
  847.    /*
  848.    ** Set current dir
  849.    */
  850.  
  851.    PARSE SOURCE . . . script .
  852.    progdir = PATHPART(script)
  853.  
  854.    booll = LENGTH(progdir)
  855.    booli= LASTPOS(":",progdir)
  856.    boolh= LASTPOS("/",progdir)
  857.  
  858.   IF booli <= booll THEN progdir2=progdir||"/"
  859.   IF boolh == 0 THEN progdir2=progdir||"/"
  860.  
  861.    CALL PRAGMA('D',progdir)
  862.  
  863.    /*
  864.    ** Read default strings, open locale.library and catalog
  865.    */
  866.  
  867.    IF ~loadrexx(progdir,'PGP2TRXGUI.strings','') THEN
  868.       quit('Error reading file "PGP2TRXGUI.strings"!'),10)
  869.  
  870.    IF ~SHOW('LIBRARIES','locale.library') THEN
  871.       CALL ADDLIB('locale.library',0,-30,0)
  872.  
  873.    IF SHOW('LIBRARIES','locale.library') THEN DO
  874.       language = GETENV('language')
  875.       IF language ~= '' THEN
  876.          catalog = OPENCATALOG(MAKEPATH(progdir,'catalogs/' || language || '/PGP2TRXGUI.catalog'),'english',0)
  877.  
  878.       IF catalog = 0 THEN
  879.          catalog = OPENCATALOG('PGP2TRXGUI.catalog','english',0)
  880.  
  881.    END
  882.  
  883. IF PubScreen == "" THEN
  884.    PubScreen = RXTR_GETDEFAULTPUBSCREEN()
  885.  
  886.  
  887. /**********************************
  888. *** Standard-Output umlenken ;) ***
  889. ***********************************/
  890. ScreenOutPut = 'CON:'LeftBorder'/'TopBorder'/'OutPutWidth'/'OutPutHeight'/Closegadget zum Beenden/SCREEN' PubScreen'/AUTO/CLOSE'
  891.  
  892. CALL CLOSE('STDOUT')
  893. IF ~OPEN('STDOUT',ScreenOutPut,'W') THEN
  894.    EXIT(10)
  895.  
  896. CALL CLOSE('STDIN')
  897. CALL OPEN('STDIN','*','W')
  898. CALL PRAGMA('*','STDOUT')
  899. CALL PRAGMA('*','STDIN')
  900.  
  901. /*************************
  902. *** PGP-Pfad ermitteln ***
  903. **************************/
  904. PGPPath=RXTR_GETENV(PgpVariable)
  905. IF PGPPath == "" THEN DO
  906.  Say "Sie müssen eine Varible mit dem PGP-Pfad anlegen!"
  907.  EXIT(5)
  908. END
  909. Laenge=WORDLENGTH(PgpPath,1)
  910.  SELECT
  911.   WHEN LASTPOS("/",PgpPath) = Laenge THEN NOP
  912.   WHEN LASTPOS(":",PgpPath) = Laenge THEN NOP
  913.  OTHERWISE
  914.   PgpPath = PgPPath||"/"
  915.  END
  916.  
  917. RETURN
  918.  
  919. /*******************************************************************************
  920. ** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
  921. *******************************************************************************/
  922. break_c:
  923. failure:
  924. halt:
  925. ioerr:
  926. syntax:
  927.    SAY '+++ Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)
  928.    SAY SOURCELINE(sigl)
  929.  
  930.    IF app ~= '00000000'x THEN
  931.       CALL TR_DELETEAPP(app)
  932.  
  933.    EXIT(10)
  934. /*EOS*/
  935.